package 程序员面试金典;

import java.util.HashSet;

/**
 * 面试题 01.04. 回文排列
 * 给定一个字符串，编写一个函数判定其是否为某个回文串的排列之一。
 *
 * 回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。
 *
 * 回文串不一定是字典当中的单词。
 *
 *
 *
 * 示例1：
 *
 * 输入："tactcoa"
 * 输出：true（排列有"tacocat"、"atcocta"，等等）
 */
public class T01_04 {

    //回文排列 最多只有一个 单独的字符  其他都是成对出现
    public boolean canPermutePalindrome(String s) {

        HashSet<Character> hashSet = new HashSet<>();

        char[] chars = s.toCharArray();

        for (char aChar : chars) {

            if (hashSet.contains(aChar)) {
                hashSet.remove(aChar);
            } else {
                hashSet.add(aChar);
            }
        }

        return hashSet.size() <= 1;

    }

}
